package day2;
import java.util.*;

public class Main2 {
    /**
     * kotori和素因子
     * https://ac.nowcoder.com/acm/problem/50042
     */
    public static int n;
    public static int[] arr;
    public static int ret = 0x3f3f3f3f; //返回 素因子和 的最大值
    public static boolean[] visit = new boolean[1001]; // 标记是否使用过
    public static int path = 0;// 用来记录 素因子 的和的

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        n = in.nextInt();
        arr = new int[n];
        for(int i = 0;i < n;i++) {
            arr[i] = in.nextInt();
        }

        dfs(0); // 这里传入判断的第几个数值

        if(ret >= 0x3f3f3f3f) {
            System.out.println(-1);
        }else {
            System.out.println(ret);
        }
    }

    public static void dfs(int pos) {
        if(pos == n) {
            ret = Math.min(ret,path);
            return;
        }

        for(int i = 2;i <= arr[pos];i++) {
            if(arr[pos] % i == 0 && !visit[i] && isPirm(i)) {
                // i 这个值是 因子，并且没有使用过，并且是素数的话，那么就是素因子
                path += i;
                visit[i] = true;
                dfs(pos + 1);
                // 剪枝
                path -= i;
                visit[i] = false;
            }
        }
    }

    public static boolean isPirm(int x) {
        if(x <= 1) {
            return false;
        }
        for(int i = 2;i <= Math.sqrt(x);i++) {
            if(x % i == 0) {
                return false;
            }
        }
        return true;
    }
}
